package com.ly.homework;

/**
 * 线程同步问题,同一时间，只能同一进程访问一个资源
 * 2个用户同时取线，当余额不够就不能取款
 */
public class Homework02 {
    public static void main(String[] args) {
        //同步锁只能创建一个实列
        T t = new T();

        Thread thread = new Thread(t);
        thread.setName("张三");
        Thread thread1 = new Thread(t);
        thread1.setName("王五");

        thread.start();
        thread1.start();
    }
}
//编写取款的线程
//多个线程共享资源问题，用实现接口
class T implements Runnable{
    private int money=10000;
    @Override
    public void run() {
        //这里使用synchronized实现了线程同步
        //当多个线程执行到这里时，就会去争this对象锁
        //那个获取到执行那个
       //这里实现了线程同步
        //争不到this对象就blocked，准备下次争
        //非公平锁
            while (true) {
                //判读余额是滞够
                synchronized (this) {
                    if (money < 1000) {
                        System.out.println("余额不足");
                        break;
                    }
                    money -= 1000;
                    System.out.println(Thread.currentThread().getName() + "最出了1000元，当前余额还剩" + money);
                    //体}
                }
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException e) {
                        e.printStackTrace();
                }
            }


    }
}
